package persistence;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 
 * Datenklasse, haelt alle Daten zu einem Spieler
 *
 */
public class Player implements Comparable<Player> {
	
	private String firstName;
	private String familyName;
	private int    playsSince;
	private Date   dateOfBirth;
	private boolean active;
	
	public Player() {
		firstName   = null;
		familyName  = null;
		playsSince  = 0;
		dateOfBirth = null;
		active = true;
	}
	
	/**
	 * 
	 * @param firstName Vorname
	 * @param familyName Nachname
	 * @param playsSince Jahr, seit dem der Spieler kickert
	 * @param dateOfBirth Geburtsdatum
	 */
	public Player(String firstName, String familyName, int playsSince,
			Date dateOfBirth) {
		this.firstName   = firstName;
		this.familyName  = familyName;
		this.playsSince  = playsSince;
		this.dateOfBirth = dateOfBirth;
		this.active = true;
	}
	
	/**
	 * Methode wird beispielsweise aufgerufen, wenn das Objekt auf
	 * der Standardausgabe ausgegeben wird
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
		return firstName + " " +  familyName + "(" + sdf.format(dateOfBirth) + ")";
	}
	
	/**
	 * Methode liefert den Vornamen
	 */
	public String getFirstName() {
		return firstName;
	}
	
	/**
	 * Methode setzt den Vornamen
	 */
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	
	/**
	 * Methode liefert den Familiennamen
	 */
	public String getFamilyName() {
		return familyName;
	}
	
	/**
	 * Methode setzt den Familiennamen
	 */
	public void setFamilyName(String familyName) {
		this.familyName = familyName;
	}
	
	/**
	 * Methode liefert das Jahr, seit dem ein Spieler kickert
	 */
	public int getPlaysSince() {
		return playsSince;
	}
	
	/**
	 * Methode setzt das Jahr, seit dem ein Spieler kickert
	 */
	public void setPlaysSince(int playsSince) {
		this.playsSince = playsSince;
	}
	
	/**
	 * Methode liefert das Geburtsdatum
	 */
	public Date getDateOfBirth() {
		return dateOfBirth;
	}
	
	/** 
	 * Methode setzt das Geburtsdatum
	 */
	public void setDateOfBirth(Date date) {
		this.dateOfBirth = date;
	}
	public boolean isActice() {
		return active;
	}
	public void setActive(boolean active) {
		this.active = active;
	}
	/**
	 * Methode �berschreibt equals
	 * Datens�tze sind gleich(equals = true), wenn firstName, familyName und dateOfBirth �bereinstimmen
	 */
	@Override
	public boolean equals(Object obj) {
		if (obj == null)
			return false;
		if (this.getClass() != obj.getClass())
			return false;
		Player player = (Player) obj;
		if (this.firstName.equals(player.firstName)
				&& this.familyName.equals(player.familyName)
				&& this.dateOfBirth.equals(player.dateOfBirth))
			return true;
		else
			return false;
	}

	@Override
	public int compareTo(Player o) {
		// TODO Auto-generated method stub
		return 0;
	}
}
